import fitz
import os


def mkdir(path):
    folder = os.path.exists(path)
    if not folder:  # 判断是否存在文件夹如果不存在则创建为文件夹
        os.makedirs(path)  # makedirs 创建文件时如果路径不存在会创建这个路径
    else:
        pass


def pdf_image(pdfPath, imgPath, zoom_x, zoom_y, rotation_angle):
    """
    :param pdfPath: pdf文件的路径
    :param imgPath: 图像要保存的文件夹
    :param zoom_x: x方向的缩放系数
    :param zoom_y: y方向的缩放系数
    :param rotation_angle: 旋转角度
    :return: None
    """
    print(pdfPath)
    # 打开PDF文件
    pdf = fitz.open(pdfPath)
    print(pdf)
    name = pdf.name
    name = name.replace('pdfs/', '').replace('.pdf', '')
    print(name)
    # 逐页读取PDF
    for pg in range(0, pdf.page_count):
        page = pdf[pg]
        # 设置缩放和旋转系数
        trans = fitz.Matrix(zoom_x, zoom_y).prerotate(rotation_angle)
        pm = page.get_pixmap(matrix=trans, alpha=False)
        # 开始写图像
        mkdir(imgPath)
        url=''
        if pg==0:
          url=f"{imgPath}{name}.png"
        else:
          url=f"{imgPath}{name}{str(pg + 1)}.png"
        print(url)
        pm.save(url)
    pdf.close()


# pdf_image(r"pdfs/01.pdf", r"images/", 10, 10, 0)

file_dir = r'pdfs/'
file_list = []
# items它是一个三元组(root, dirs, files)，其中root是当前目录的路径，dirs是当前目录中的子目录列表，files是当前目录中的文件列表



if __name__ == '__main__':
    for root, dirs, files in os.walk(file_dir, topdown=False):
        for file in files:
            if file.endswith('.pdf'):
                file_list.append(os.path.join(root, file))
    print(file_list)

    for file in file_list:
        head = 'pdfs/'
        pdf_image(head + file, r"images/", 5, 5, 0)

